package com.molichuxing.gateway.bff.car.services;

import java.util.List;
import java.util.Map;

import com.molichuxing.framework.service.RootService;
import com.molichuxing.gateway.bff.car.entity.response.AccidentDownloadVo;
import com.molichuxing.gateway.bff.car.entity.response.CarInsuranceVo;
import com.molichuxing.gateway.bff.car.entity.response.CarsViolationVo;
import com.molichuxing.gateway.utils.entity.UserEntity;

/**
 * 
 * @author liyg
 * 车辆相关导出服务
 *
 */
public interface CarDownloadBffService extends RootService {

	/**
     * 查询导出车辆违章数据
     * @param map
     *   ids(违章ids) licencePlate(车牌号) vin(车架号) status(违章处理状态) userId(用户id)  startDate（违章开始时间） endDate（违章结束时间）
     * @return
     */
	public List<CarsViolationVo> getCarsViolationDownload(Map<String, Object> map);

	/**
	 * 查询车辆违章导出数据条数
	 * 
	 * @param selectParams
	 * @return
	 */
	public Long getCarsViolationDownloadCount(Map<String, Object> selectParams);

	/**
	 * 异步发送车辆违章导出数据
	 * 
	 * @param selectParams
	 * @return
	 */
	public Boolean getCarsViolationDownloadEmail(Map<String, Object> selectParams, UserEntity user);

	  /**
	   * 查询事故报备导出数据
	   *    * ids id集合
	   *    * licencePlate 车牌号
	   *    * vin 车架号
	   *    * userName 用户名
	   *    * liabilityType 责任类型（0：无责，1：全责，2：主责，3：同责，4：次责）
	   *    * isCasualty 是否有人伤（0：无人伤，1：有人伤）
	   *    * accidentType 事故类型（1:单方事故，2：双方事故，3：多方事故，4：停放受损，5：车辆盗抢，6：车辆自燃，7：车辆涉水，8：重大自然灾害）
	   *    * accidentStartTime     出险开始时间
	   *    * accidentEndTime     出险结束时间
	   *    * status 事故状态（1：事故未确认，2：事故已确认，3：结案未确认，4：已结案，5：无效报备）
	   * @param map
	   * @return
	   */
	public List<AccidentDownloadVo> getAccidentDownload(Map<String, Object> map);

	/**
	 * 查询事故报备导出数据条数
	 * 
	 * @param selectParams
	 * @return
	 */
	public Long getAccidentDownloadCount(Map<String, Object> selectParams);

	/**
	 * 异步发送事故报备导出数据
	 * 
	 * @param selectParams
	 * @param user
	 * @return
	 */
	public Boolean getAccidentDownloadEmail(Map<String, Object> selectParams, UserEntity user);


	/**
	 * 车辆保险导出
	 * 
	 * @param selectParams
	 * @return
	 */
	public List<CarInsuranceVo> getInsuranceListDownload(Map<String, Object> selectParams);

	/**
	 * 车辆保险导出数量
	 * 
	 * @param selectParams
	 * @return
	 */
	public Long getInsuranceListDownloadCount(Map<String, Object> selectParams);

	/**
	 * 车辆保险导出发邮件-异步请求
	 * 
	 * @param selectParams
	 */
	public Boolean getInsuranceListDownloadEmail(Map<String, Object> selectParams, Integer carInsuranceType,
			UserEntity user);
}
